public class MyHelp {
    /**
     * 2020-1-8
     * 第四阶段 --做后台管理系统
     * 1.需要登录---必须要有账号 ---注册页面
     *      需要验证当前输入信息是否有误
     *      需要验证当前输入的用户账号是否重复
     * 2.登录页面  --进行登录
     *      验证码
     * 3.进入后台管理页面
     *      将管理页面分成三部分
     *      头部显示常用设置部分
     *      左边显示：菜单管理--增删查改
     *      右边显示的是具体操作页面
     *
     * 4.首先做用户查询页面
     *      1.查询所有信息  手写table
     *      2.编辑  删除  修改密码
     *      3.引入字体图标
     * 5.模糊查询   查询所有的sql语句进行修改   where
     * 6.分页查询  ---修改sql  limit     前端js代码逻辑
     * 7.多张表操作  ---产品查询
     *      CRUD
     *      1.产品新增--文件上传  formdata
     *      2.引入一个服务部编辑器
     * 8.和前端页面进行互通----jsp得到数据：修改service   从dao数据库得到数据并展示
     * 9.session认证--必须登录才能进行后台管理操作功能
     *
     */
    /**
     * 2021-1-8
     * 1.注册页面
     *   js
     *   ajax引入
     *   后台json对象传值格式
     *   正则表达式
     *
     *   doget和dopost的区别？
     *   注意：一般情况下  html里面不要存在css  js
     *   js里面不要存在css
     *
     */
    /**
     * 2021-1-11
     * 注册
     * 1.从前端页面传递数据到后端
     * 2.性别和爱好的取值
     * 3.在服务逻辑层要判断当前用户是否存在
     * 4.手写jdbc  ---思路
     * 5.null的区别？
     * 6.新增sql语句的编写
     * 7.得到当前计算机的时间
     * 8.前端js逻辑判断
     */
    /**
     * 2021-1-12
     * 用户登录
     * 1.登录页面
     *    calc   字体图标   验证码
     * 2.后台：--验证码 思路
     * 3.验证：servlet  --
     *    拿到数据   封装model  调用service 返回数据  返回页面json对象
     * 4.service  判断验证码是否正确   根据用户名和密码查询
     * 5.dao  注意：少些变量  少嵌套if  else
     *
     */
    /**
     * 2021-1-13
     * 用户查询
     * 1.管理  --top  left  right  clac
     * 2.管理js逻辑代码  菜单定制
     * 3.用户管理    手写table--滚动条设置
     * 4.js---页面价值时调用后台取得数据
     *      1.ajax--单独写方法
     *      2.赋值--- data.list
     *      3.for循环   字符串拼接
     * 5.后台servlet的写法
     *      多了乱码设置
     *         JSONObject jsonObject = new JSONObject();
     *         jsonObject.put("list", list);
     *         jsonObject.put("result",1);,
     *
     *
     * 前端success: function (data) {这里的data对应的是后端的jsonObject
     * 前端的data.list 里面的list 对应的是后端jsonObject.put("list", list);key值
     * 6.dao层多了封装  resultset
     *
     */
    /**
     * 2021-1-14
     * 编辑
     * 1.新建一个编辑页面，删掉密码修改
     * 2.页面价值完成应该做一个根据id查询当前数据
     * 3.页面之间传值的两种方式
     *      localStorage.setItem("userId",id);
     *     sessionStorage.setItem("userId", id);
     * 4.赋值--性别和爱好
     * 5.封装myAjax
     * 6.后台代码的编写
     */
    /**2021-1-14
     * 模糊查询
     * 只关于sql语句
     * where条件
     * 只需要修改传递参数
     * 1.在页面js查询所有的情况下，将需要进行模糊查询的数据进行封装
     * let data = {
     *         username: $("#username").val(),
     *         phone: $("#phone").val(),
     *         email: $("#email").val()
     *     };
     * 2.在后台findAll里面增加取得数据和封装数据
     * 3.在sql语句里面修改
     *  注意：
     *  1.关键字的书写顺序
     *  2.null和非空判断
     *  3.字符串拼接
     * 4.find_in_set
     * 5.sql 字符串拼接
     * 6.生日 between and
     *
     */
    /**
     * 2021-1-19
     * 图片上传
     *
     * 1.前端--必须是formdata格式
     *  let data=new FormData();// 注意是key，value的形式保持
     * 2.ajax  必须多两条语句
     *         contentType: false,
     *         processData: false,
     * 3.后端：
     *      1.jar包
     *      2.复制servlet文件上传的代码
     *      3.最重要的是修改保存地址 硬盘地址和数据库地址
     * 4.和其他增加一样
     * 5.和普通传递数据唯一不同的是取值的不同
     */
    /**
     * 2021-=1-20
     * 懒加载  预加载
     * 富文本 网站是错的  只不过给我们一个思路
     * 1.首先需要下载js文件
     * 2.找到需要用富文本的地方，注意：js一定要写在富文本之后  --页面加载顺序
     * 3.根据文档提示--一步一步做
     * 4.需要修改后端服务接口const editUrl = '/upload-img';//服务器访问地址
     * 5.需要修改返回的回调函数 let url = result.url;
     * 6.在后台写一个接口，用于存放文件，并返回文件地址
     *  String url = (String) req.getAttribute("imgHref");
     *         JSONObject jsonObject = new JSONObject();
     *         jsonObject.put("url", url);
     *         resp.getWriter().println(jsonObject);
     * 7.测试  是否正确
     * 8.js  css  和html 应该分开
     */
    /**
     * 1.在Java代码里面截取一部分数据
     * 2.在js代码里面去截取一部分数据
     * 3.在sql数据库里面截取一部分数据
     *
     * 对于1.2来说数据量比较大的情况下，后台反应比较满，而且会有很多冗余数据
     * SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
     * limit分页公式：curPage是当前第几页；pageSize是一页多少条记录
     * limit  (curPage-1)*pageSize,pageSize
     * 1，10   ----》limit 0,10
     * 4,3  ----->limit   9,3
     *
     * 需要修改的地方：
     * 1.在数据实现层  修改sql语句拼接
     * 2.需要新建一个分页对象，用于存放当前页和每页显示的条数
     * 3.需要修改页面控制层  servlet  添加前端传递到后端的分页数据
     * 4.去前端js查询所有的方法里面添加分页对象
     *          curPage: 1,
     *         pageSize: 10
     * 5.在页面上去添加分页的html代码
     * 6.写js代码 ---需要用到总条数
     * 7.添加后台总条数的代码
     * 8.将分页的方法合并
     * 9.将分页单独提取进行封装--注意：分页页面加载时需要事件，不能和findAll同时查询
     * 10.将模糊查询该为page('first');
     *
     */

    /**
     * 2021-1-22
     * 图片编辑和session认证
     * 1.显示查询数据时，记得要隐藏多余字符，
     * 如果有描述有图片，应该将所有图片去掉，只显示文字
     * 最好的方式是什么都不显示，直接用另一个页面去展示描述信息---商品预览
     * 2.有图片logo的时候，需要注意图片大小
     * 3.编辑时，如果引入了两个以上js的时候，方法名不能一样
     * 4.注意：如果数据正常，但不显示数据时，页面加载顺序，
     * 5.session认证---
     *      1.页面刷新时需要判断是否已经登录
     *      2.当用户直接访问接口时，也需要判断是否已经登录
     * 6.图片上传时，需要单独进行验证是否登录，因为req请求只能用一次，第二次拿不到值
     * 7.将js所有判断是否登录进行封装
     *
     *
     *
     */
    /**
     * 2021-1-25
     * redis
     * 1.redis的应用场景
     * 2.jar包引入
     * 3.知道redis应该写在那个层  逻辑层
     * 4.逻辑代码的编写
     * 5.里面的关键字  方法名  常用方法去熟悉
     * 6.注意：每一次修改数据时，都应该去删除当前数据库里面的当前key值
     *
     */
    /**
     * 2021-1-27
     * 线程
     *
     * 1.线程的实现方式
     * 2.线程的命名
     * 3.线程的优先级
     * 4.得到线程对象
     * 5.优先级  --特性
     */
    /**
     * 2021-1-28
     * mybatis
     * 1.加入jar包
     * 2.建立资源文件---
     * 1）配置  配置mybatis的读取--读取数据库的文件 config.xml
     * 2）配置 链接数据库的地址 用户名和密码 jdbc.properties
     * 3）java类  ---读取配置GetSqlSession.java
     * 4）mapper.xml  将所有的sql语句单独提取出来写入xml文件userMapper.xml
     * 5）sql语句的编写
     * 6）数据实现层的修改
     * 注意：
     * 数组 foreach
     * if  （ and）
     * band
     * #{}
     * 转义字符的处理
     *
     *
     */
    /**
     * 2021-1-29
     * druid和前端js取值
     * 1.引入jar包
     * 2.配置config文件
     *     <typeAliases>
     *         <typeAlias type="com.cn.wanxi.util.DruidDataSourceFactory"
     *                    alias="DRUID"/>
     *     </typeAliases>
     * 3.重写datasource
     * public class DruidDataSourceFactory implements DataSourceFactory {
     * 4.修改读取配置文件
     *     public static SqlSession getSqlSession() {
     *         String resource = "druid.xml";
     * -------------------------------------------------
     * 前端js取值
     * 注意的问题：需要将公共部分的数据单独提取出来，否则可能页面不能显示
     *
     */
}
